#ifndef _workdir_filesystem_Directory_h
#define _workdir_filesystem_Directory_h

#include <workdir.filesystem.Abstract.h>

namespace workdir {

namespace filesystem {

using namespace nemesis;

class Directory : public Abstract {
public:
   Directory (const std::string& name) : Abstract (ClassType::Directory, name) {;}
   Directory (Directory* parent, const std::string& name) : Abstract (ClassType::Directory, parent, name) {;}
  
   void print (const int level = 0) const throw ();
   
   static Directory* down_cast (Abstract* abstract) throw () {
      return (abstract->getClassType () == ClassType::Directory) ? static_cast <Directory*> (abstract): NULL;
   }
   static const Directory* down_cast (const Abstract* abstract) throw () {
      return (abstract->getClassType () == ClassType::Directory) ? static_cast <const Directory*> (abstract): NULL;
   }
};

}
}

#endif
